import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
// 提供 $store 全局访问
Vue.use(Vuex)

// 创建 store
const store = new Vuex.Store({
  // 开启严格模式
  strict: true,
  // 修改state的方法，相当于组件的 methods
  mutations: {
    // 改变count
    // 参数1：state，参数2：payload,参数二是外部传来的
    addCount (state, payload) {
      state.totalCount += payload
    }
  },
  // 相当于组件处理异步的方法
  actions: {
    addCountAsync (store, payload) {
      setTimeout(() => {
        // store 仓库
        // payload 是外部传来的，接受son1中的实参100
        store.commit('addCount', payload)
      }, 1000)
    }
  },
  getters: {
    // getter函数第一个参数必须是state
    // getter 函数必须有返回值且返回值必须是一个值
    filterList (state) {
      return state.list.filter(item => item > 5)
    }
  },
  // 模块化
  modules: {
    // 模块化
    // 模块化中的state是模块私有的
    // 模块化中的mutations是模块私有的
    // 模块化中的actions是模块私有的
    // 模块化中的getters是模块私有的
    user
  },
  // state 相当于组件的 data，提供响应式数据
  state: {
    totalCount: 99,
    title: '全局标题',
    list: [1, 2, 3, 4, 5, 6, 7, 8, 9]
  }
})

// 导出 store
export default store
